還沒學到這個屬性之前,一直以為必須使用到JavaScript,才能讓網頁有動畫的效果,沒想到用CSS也可以做出動畫的效果。只要會運用transition和animation這兩個CSS屬性,就可以產生很多不同的動畫效果了。
因為transition比起animation用法比較好理解,且部分屬性概念有重疊,所以就著重於整理比較容易忘記的animation屬性筆記。
animation 屬性是以下幾個屬性的縮寫:
animation-name
動畫名稱animation-duration
動畫播放時間animation-delay
動畫延遲播放時間animation-iteration-count
動畫播放次數animation-fill-mode
設定最終停留位置animation-direction
動畫播放方向animation-play-state
動畫播放或暫停狀態animation-timing-function
動畫加速度函式animation:name duration | timing-function | delay | iteration-count | direction | fill-mode | play-state;
div {
animation-name: move;
}
相關資料: 4.2. The animation-name property
animation-duration 指的是「播放一次」動畫需要的時間,單位為 秒 ( s ) 或毫秒 ( ms ),預設值 0s,如果沒有設定或將其設為 0s,就不會播放動畫,基本上和 animation-name 動畫名稱都是屬於一定要有的屬性。
div {
animation-duration: 5s;
}
設定動畫開始之後延遲的時間
比較少會使用到,通常用在設定了有很多動畫效果的時候
例如:
動畫在兩秒後才會開始執行
animation-delay: 2s;
如果延遲播放時間是負數,例如 -1s、-2s,效果會從延遲變成快轉,假設動畫播放時間是設定 5 秒,animation-delay 設定為 -2s,動畫就會從第二秒開始播放,播放三秒後結束。
預設是 1,也可以設定成infinite(無限次執行)。
但如果設定成infinite,會建議設置在比較小的區塊,避免吃效能
例如:
設定動畫只會播放兩次
div {
animation-iteration-count: 2;
}
animation-fill-mode: none;
預設值,不論動畫播放次數,結束後一律返回原始狀態。animation-fill-mode: forwards;
停留在最後的一個位置animation-fill-mode: backwards;
停留在起始位置animation-fill-mode: both;
此設定值會依照動畫播放次數或是播放方向,停留在起始位置或最後位置animation-direction 屬性定義動畫是正常播放、倒轉播放或是其它方式
例如:
設定先正常播放,後倒轉播放
div {
animation-direction: alternate;
}
animation-play-state:running;
預設值,表示動畫正常執行。可搭配滑鼠 hover 的效果使用animation-play-state:paused;
設定動畫暫停。animation-timing-function:ease;
預設是ease 從慢到快 最後會是慢速結束animation-timing-function:ease-in;
從慢到快animation-timing-function:ease-out;
從快到慢animation屬性會搭配@keyframes一起使用來產生動畫效果
例如:
範例一
div{
width:100px;
height:50px;
background-color: red;
animation-name: example;
animation-duration: 3s;
position:relative;
@keyframes example {
from{
background-color: red; left:0px; top:0px;
}
to {
background-color: blue; left:0px; top:0px;
}
}
範例二
.element {
animation: pulse 5s infinite;
}
@keyframes pulse {
0% {
background-color: #001F3F;
}
100% {
background-color: #FF4136;
}
}
@keyframes animationName {
keyframes-selector {
/* css-styles */
}
}
用from / 0% 表示動畫的起始,to / 100% 表示動畫的結束
參考資料:
完整解析 CSS 動畫 ( CSS Animation ), 理解animation-fill-mode属性, Day27:小事之 Transition 與 Animation
以上為個人學習筆記整理
若有錯誤,歡迎指正